package com.greenold.check.mapper;

import java.util.Date;
import java.util.List;
import com.greenold.check.domain.Checkout;
import com.greenold.check.domain.Dto.CheckOutDto;
import com.greenold.check.domain.Dto.CheckinDto;
import com.greenold.residing.domain.Contract;
import com.greenold.residing.mapper.ContractMapper;
import org.apache.ibatis.annotations.Param;

/**
 * 退住Mapper接口
 * 
 * @author ruoyi
 * @date 2025-10-13
 */
public interface CheckoutMapper 
{
    /**
     * 查询退住
     * 
     * @param id 退住主键
     * @return 退住
     */
    public Checkout selectCheckoutById(String id);

    /*
    *
    * 退出列表Dto
    * @param checkoutDto 退住Dto
    * @return 退住Dto集合
    *
    * */


    public List<CheckinDto> selectCheckoutDtoList(CheckinDto checkoutDto);


    /**
     * 查询退住列表
     * 
     * @param checkout 退住
     * @return 退住集合
     */
    public List<Checkout> selectCheckoutList(Checkout checkout);

    /**
     * 新增退住
     * 
     * @param checkout 退住
     * @return 结果
     */
    public int insertCheckout(Checkout checkout);

    /**
     * 修改退住
     * 
     * @param checkout 退住
     * @return 结果
     */
    public int updateCheckout(Checkout checkout);

    /**
     * 删除退住
     * 
     * @param id 退住主键
     * @return 结果
     */
    public int deleteCheckoutById(String id);

    /**
     * 批量删除退住
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCheckoutByIds(String[] ids);

    /**
     * 查询当天已有的退住记录数量
     * @param checkoutTime 当天日期
     * @return 当天记录数量
     */
    int countToday(@Param("checkoutTime") Date checkoutTime);

    /**
     * 查询入住列表Dto
     *
     * @param id
     * @return 入住Dto集合
     */
    CheckOutDto selectCheckOutDtoById(String id);

//
    Contract selectContractByNo(String contractNo);

    Checkout selectCheckoutByBusinessId(String businessId);
}
